package com.atguigu.gmall.product.service;

import com.atguigu.gmall.product.model.BaseAttrInfo;
import com.atguigu.gmall.product.model.SkuInfo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.math.BigDecimal;
import java.util.List;

public interface SkuManageService {

    /**
     * 保存商品SKU
     *
     * @param skuInfo
     * @return
     */
    void saveSkuInfo(SkuInfo skuInfo);

    /**
     * 根据分类ID分页查询商品SKU列表
     * @param skuInfoPage 分页对象
     * @param category3Id 分类ID
     * @return
     */
    Page<SkuInfo> getSkuByPage(Page<SkuInfo> skuInfoPage, Long category3Id);

    /**
     * 对商品SKU上架处理
     *
     * @param skuId
     * @return
     */
    void onSale(Long skuId);

    /**
     * 对商品SKU下架处理
     *
     * @param skuId
     * @return
     */
    void cancelSale(Long skuId);

    /**
     * 根据商品SKUID查询商品基本信息以及SKU相关图片列表
     * @param skuId
     * @return
     */
    SkuInfo getSkuInfo(Long skuId);

    /**
     * 根据商品SKUID查询商品基本信息以及SKU相关图片列表
     * @param skuId
     * @return
     */
    SkuInfo getSkuInfoFromDB(Long skuId);


    /**
     * 根据商品SkuID查询商品实时价格
     *
     * @param skuId
     * @return
     */
    BigDecimal getSkuPrice(Long skuId);

    /**
     * 根据商品SkuID查询sku商品所有属性名称以及属性值
     *
     * @param skuId
     * @return
     */
    List<BaseAttrInfo> getAttrList(Long skuId);

    /**
     * 通过spu下的一组销售属性切换sku商品页面
     * @param spuId
     * @return {"3732|3734":"24", "3732|3735":"25", "3733|3734":"26", "3733|3735":"27"}
     */
    String getSkuValueIdsMap(Long spuId);
}
